package com.ajz.common.service;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;

import com.ajz.common.entity.BaseEntity;

public interface IBaseService<T extends BaseEntity<?>, ID extends Serializable> {

	/**
	 * 查找全部记录
	 * @return
	 */
	List<T> findAll();
	
	/**
	 * 查找全部记录
	 * @return
	 */
	Page<T> findPage(PageRequest pageRequest, Map<String, Object> searchParams);
	
	Iterable<T> findList(Map<String, Object> searchParams);
	List<T> findThisAll(Map<String, Object> searchParams);

	/**
	 * 根据id获取实体
	 * @param id
	 * @return
	 */
	T get(ID id);

	/**
	 * 根据id获取实体
	 * @param id
	 * @return
	 */
	T load(ID id);
	
	/**
	 * 保存实体
	 * @param entity
	 * @return
	 */
	T save(T entity);
	
	/**
	 * 保存实体
	 * @param entity
	 * @return
	 */
	T update(T entity);
	
	/**
	 * 删除实体
	 * @param entity
	 */
	void delete(T entity);
	
	/**
	 * 根据id删除实体
	 * @param id
	 */
	void delete(ID id);

	/**
	 * 根据id数组删除实体
	 * @param id
	 */
	void delete(ID[] ids);
	
	/**
	 * 删除所有数据
	 */
	void deleteAll();
	
	public void batchInsert(List<T> list);
	
	public void batchUpdate(List<T> list);
	
}
